In recent decades, there has been rapid growth in the number of computers, and thus people, connected to the Internet, a vast network of computers connected by common communication protocols and data formats, and the World-Wide Web (WWW), a layer of structured information transmitted over the Internet. This increase of connectivity has allowed computer users to access various types of information, disseminate information, participate in electronic commerce transactions, as well as engage in various forms of social interaction and entertainment previously limited by geographic and/or socio-political bounds.
For example, people can send electronic messages, play games and collaborate on work projects concurrently with other users regardless of terrestrial or extraterrestrial bounds. Several people can simultaneously provide inputs into a shared computer program and thus participate in the shared computer program. Each participant's actions, decisions, etc. can affect the shared virtual environment and thus affect the shared virtual environment for all participants. Such programs may be known as multi-user, interactive applications.
A common type of interactive computer experience is the simulation. In its most general sense, a simulation is the imitative representation of the functioning of a system or process. In many cases, a user is presented with a representation of some experience, such as performing an activity. There are many types of simulators. One example is a flight simulator, in which a user interacts with a computer that provides the user with a visual experience of flying an aircraft. Simulators can be used for training, research, entertainment, education, as well as many other suitable activities. With the increasing sophistication of computer hardware, simulations can be advantageously utilized in the context of multi-user interactive applications. For example, virtual environments may be provided for multiple users to interactively participate in.
Virtual environments for multiple users may involve the use of a single large central computer. Users may send or receive data from the central computer, while computationally intensive operations are performed on the central computer. In such virtual environments, the amount of computation involved may exceed the capabilities of many computer systems. Other systems may subdivide a virtual environment, but not in a contiguous way. Yet other systems may use a grid of computers to provide a virtual environment; however, cells and/or regions of the virtual environment may not be continuous.
In some cases, because the virtual environment persists even after the user logs out, some virtual environments may also be known as Persistent-State World (PSW) environments. Virtual environment applications may be distributed independently of multi-user environments on CD-ROM or DVD or available for download over the Internet. These virtual environment applications typically connect to their own servers.
One common characteristic among the various multi-person interactive applications, such as virtual environments, is that they are based on the client-server paradigm. This means that most of the processing involved in executing these multi-person interactive applications is centralized on the server computers to which the client computers are connected. This method of creating a virtual community is not entirely scalable or reliable. For example, typically, because of the limited scalability, only a small subset of simultaneous users can interact with one another at any time.
Absent the presence of one or more a central computers and/or simulation servers for defining space and maintaining persistent states, however, establishing a distributed virtual environment using a network of peers presents challenges due to disparate system capacities and virtual environmental conditions.
Notwithstanding the methods discussed above, there continues to exist a need for methods, systems, and computer program products for providing a distributed virtual environment.